Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cards: Update all product cards to use new/updated fields #411

Merged
merged 16 commits into from
Nov 16, 2020

Conversation

creotutar
Copy link
Contributor

@creotutar creotutar commented Oct 23, 2020

The product card needs to use subfields with a different format. Because
the details can have rich text, we stop escaping the details.

We add a new tag element to the prominentimage tag. This should show if
the stock status of the Product entity is present and not "In Stock".
This is a hardcoded value for now, as we get a string from the backend.

The tag should be in the top left corner, only take up 75% of the image
if it is long and should be sourced by two new --hh level css variables.

Tag should be commented out by default.

J=SLAP-696
TEST=manual

Test the styling changes in IE11.

Test on a local repository that a card using the product-standard and
product-prominentimage cards shows all expected data.

For example, if you search "Bouquet of Roses" on the Slapshot test
account and look at the Products vertical, you should see an image, a
price, and a description with the correct rich text formatting.

@rosiegrant
Copy link
Contributor

@creotutar I realized I missed this -- because we're using rich text now, for the product cards we should comment out the showMore stuff by default, like we do for the accordion card:

      // showMoreDetails: {
      //   showMoreLimit: null, // Character count limit
      //   showMoreText: '', // Label when toggle will show truncated text
      //   showLessText: '' // Label when toggle will hide truncated text
      // },

@creotutar creotutar marked this pull request as ready for review October 26, 2020 17:53
cards/product-prominentimage/component.js Outdated Show resolved Hide resolved
cards/multilang-product-prominentimage/component.js Outdated Show resolved Hide resolved
}

let tag;
if (profile.stockStatus && profile.stockStatus !== 'In Stock') {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will "In Stock" be translated for other languages/locales?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really good point, finding that enums aren't translated in backend, will probably keep this hardcoded conditional but need a solution for translating tag copy, waiting on Rose

@creotutar
Copy link
Contributor Author

This will not be part of 1.17 and so must wait on being merged to develop

Copy link
Contributor

@alexisgrow alexisgrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this lgtm!

@creotutar
Copy link
Contributor Author

TODO: change alt text too

The product card needs to use subfields with a different format. Because
the details can have rich text, we stop escaping the details.

J=SLAP-696
TEST=manual

Test on a local repository that a card using the product-standard and
product-prominentimage cards shows all expected data.

For example, if you search "Bouquet of Roses" on the Slapshot test
account and look at the Products vertical, you should see an image, a
price, and a description with the correct rich text formatting.
We add a new tag element to the prominentimage tag. This should show if
the stock status of the Product entity is present and not "In Stock".
This is a hardcoded value for now, as we get a string from the backend.

The tag should be in the top left corner, only take up 75% of the image
if it is long and should be sourced by two new --hh level css variables.

Test the width changes in IE11.
@creotutar creotutar force-pushed the feature/use-new-product-fields branch from 1fd3081 to be5b431 Compare November 11, 2020 02:02
image: imageUrl, // The URL of the image to display on the card
altText: alternateText, // The alternate text for the image
details: profile.richTextDescription ? ANSWERS.formatRichText(profile.richTextDescription, 'richTextDescription', '_top') : null, // The text in the body of the card, Warning: cannot contain links
// tag: profile.stockStatus ? profile.stockStatus : '', // The tag text for the card
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want this commented out by default? Do we need weight in the card(s)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re: Commented out, yes according to spec
What do you mean by weight?

titleEventOptions: this.addDefaultEventOptions(),
subtitle: price, // The sub-header text of the card
details: profile.description, // The text in the body of the card
details: profile.richTextDescription ? ANSWERS.formatRichText(profile.richTextDescription, 'richTextDescription', '_top') : null, // The text in the body of the card
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this card need a tag (and weight) placeholder?

Copy link
Contributor

@alexisgrow alexisgrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this LGTM, though I left two questions ❓

let price = '';
if (profile.c_price
&& profile.c_price[0]
&& profile.c_price[0].currency
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if somebody asked this already but do we need this check for currency? don't see it currency being used anywhere

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, need to change these fields to stop using the custom field and use the new field

@tmeyer2115 tmeyer2115 merged commit 72c51fc into develop Nov 16, 2020
@tmeyer2115 tmeyer2115 deleted the feature/use-new-product-fields branch November 16, 2020 21:43
@tmeyer2115 tmeyer2115 mentioned this pull request Dec 1, 2020
tmeyer2115 added a commit that referenced this pull request Dec 1, 2020
## Version 1.17.0
Version 1.17.0 of the Theme supports the new Overlay integration. It also has a number of changes to support the new, built-in Product entity type.
### Changes
- A new file, static/js/formatters-custom.js was added to the Theme. This file is where any custom formatters or overrides of built-in formatters, should live. (#448)
- Single language cards now use the `toLocalizedDistance` formatter to properly format entity distance. (#449)
- To better support WCAG, the iFrame integration now has a `title` attribute on the iFrame. (#451)
- The Theme now allows a new type of Answers integration: the Overlay. This is one of the simplest integrations offered. Additional documentation on it can be found in the Hitchhiker training.
- We upgraded the Theme to use Webpack v5. This will enable proper tree-shaking of bundle.js. (#463, #470)
- A new card type was added: `product-prominentimage-clickable`. The card itself is clickable. (#466)
- A new formatter was added: `Formatter.hoursList`. This formatter lists the hours for an entity for every day of the week. (#467)
- To improve site performance, the `defer` attribute was added to all the SDK JS assets. (#473, #474)
- Small updates were made to all the product cards to support the new, built-in Product entity type. (#411, #476)
- A new formatter was added for prices: `Formatter.price`. (#472)
- The `JAMBO_INJECTED_DATA` environment variable now includes the label of an experience's vertical. This label is used as the default vertical name in navigation, no results, and universal section title. (#490, 493)
### Bug Fixes
- The post upgrade script now works correctly when the Theme has been imported as a submodule. (#441)
- The `LocationStandard` card's styling was updated to be fully compatible with IE11. (#455)
- A bug was fixed that caused the Theme's inline Javascript to be minified twice. By removing this bug, Webpack builds were made considerably more performant. (#461)
- Fixes were made to ensure the `View Results` button for `CollapsibleFilters` is sticky. (#468, #469)
- The logic for identifying absolute URLs in the HBS templates was corrected (#475)
- The thumbnail selection logic in `Formatter.image` was incorrect. It was not properly selecting the smallest thumbnail greater than the provided threshold. This has been corrected. Note that this bug had an impact on page performance as unnecessarily large images were loaded on the page. (#471)
- The `relativePath` computed by Jambo is now properly passed along to the Theme's cards. (#499)
@tmeyer2115 tmeyer2115 mentioned this pull request Dec 1, 2020
tmeyer2115 added a commit that referenced this pull request Dec 1, 2020
## Version 1.17.0
Version 1.17.0 of the Theme supports the new Overlay integration. It also has a number of changes to support the new, built-in Product entity type.
### Changes
- A new file, static/js/formatters-custom.js was added to the Theme. This file is where any custom formatters or overrides of built-in formatters, should live. (#448)
- Single language cards now use the `toLocalizedDistance` formatter to properly format entity distance. (#449)
- To better support WCAG, the iFrame integration now has a `title` attribute on the iFrame. (#451)
- The Theme now allows a new type of Answers integration: the Overlay. This is one of the simplest integrations offered. Additional documentation on it can be found in the Hitchhiker training.
- We upgraded the Theme to use Webpack v5. This will enable proper tree-shaking of bundle.js. (#463, #470)
- A new card type was added: `product-prominentimage-clickable`. The card itself is clickable. (#466)
- A new formatter was added: `Formatter.hoursList`. This formatter lists the hours for an entity for every day of the week. (#467)
- To improve site performance, the `defer` attribute was added to all the SDK JS assets. (#473, #474)
- Small updates were made to all the product cards to support the new, built-in Product entity type. (#411, #476)
- A new formatter was added for prices: `Formatter.price`. (#472)
- The `JAMBO_INJECTED_DATA` environment variable now includes the label of an experience's vertical. This label is used as the default vertical name in navigation, no results, and universal section title. (#490, 493)
### Bug Fixes
- The post upgrade script now works correctly when the Theme has been imported as a submodule. (#441)
- The `LocationStandard` card's styling was updated to be fully compatible with IE11. (#455)
- A bug was fixed that caused the Theme's inline Javascript to be minified twice. By removing this bug, Webpack builds were made considerably more performant. (#461)
- Fixes were made to ensure the `View Results` button for `CollapsibleFilters` is sticky. (#468, #469)
- The logic for identifying absolute URLs in the HBS templates was corrected (#475)
- The thumbnail selection logic in `Formatter.image` was incorrect. It was not properly selecting the smallest thumbnail greater than the provided threshold. This has been corrected. Note that this bug had an impact on page performance as unnecessarily large images were loaded on the page. (#471)
- The `relativePath` computed by Jambo is now properly passed along to the Theme's cards. (#499)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants